エミュレータ環境でのWindows 3.1


QEMU + Q + Bochs - Windows 3.1

Windows 3.1の長期保存化の一環として幾つかのエミュレータ(仮想化ソフト)環境でWindows 3.1を実行させてみました。
Windows 3.1やアプリケーションの再インストールは手間暇が掛るため実HDDの内容を仮想ディスクにコピーする方式を採用します。
またネットワークもそのまま利用できるようにします。
最終的にはWindows 3.1環境をUSBメモリに保存し、いつでもどこでも実行できるようになります。

今回使用したエミュレータは次の通りです。

ここでは実機上のWindows 3.1環境を仮想マシン環境に移行する手順を簡単に紹介します。

  1. 実機上のWindows 3.1環境
    ・CPU:Am486 DX4 (100MHz)
    ・メモリ:48MB
    ・ビデオアダプタ:Trident GUI 9440AGi(VRAM=1024KB:800x600x256色, 800x600x65536色, 1024x768x256色)
    ・ドライブ構成:Cドライブ(基本:1.2GB)、Dドライブ(論理:0.4GB)
    ・プリンタ:Canon Bubble-Jet BJ-10v Lite
    ・サウンドカード:Sound Blaster PRO(ISA)互換カード
    ・LANカード:NE2000(ISA)互換カード(I/Oポート=0x320, IRQ=4)
    ・ネットワーク関連ソフト:PC/TCP ver 5.0(Advanced kit), Netware Client, LAN Manager他
    ・アプリケーション:Netscape Navigator 1.1ja, MS-Office, VB 2.0, Notes R3.3J他

  2. 仮想マシン環境への移行手順概略
    (1)VMwareによる仮想ディスクの準備
    (2)C:\CONFIG.SYS, C:\AUTOEXEC.BAT, C:\WINDOWS\SYSTEM.INIの変更
    (3)SVGAドライバディスク(FD)の準備(FDでなくてもOK)
    (4)初回Windows 3.1の起動
    (5)ネットワーク設定ファイルの変更(仮想環境に依存)
    (6)Windows 3.1の起動と利用

  3. VMwareによる仮想ディスクの準備

  4. C:\CONFIG.SYS, C:\AUTOEXEC.BAT, C:\WINDOWS\SYSTEM.INIの変更
    (1)仮想マシン用にC:\CONFIG.SYS(主にドライバのロード設定)を変更します。
    (2)C:\AUTOEXEC.BATを変更します。
    (3)C:\WINDOWS\SYSTEM.INIの変更;
    通常は実機で使用していたビデオドライバは仮想マシン環境では使用できません(Windows起動・表示が失敗します)。
    このため最初はVGAモードで起動するように事前にC:\WINDOWS\SYSTEM.INIに変更を加えます。
    具体的にはC:\WINDOWS\SYSTEM.INIの[boot]セクションにあるdisplay.drv=の値をVGA.DRVに変更します。

    これらの設定ファイルについては「Windows 3.1 リソースキット」という書籍でも仕様確認できます。



  5. SVGAドライバディスク(FD)の準備(FDでなくてもOK)
    VMware対応化したSVGAドライバのFDを準備します。
    このFDの中にはoemsetup.infファイルも格納しておきます。

  6. 初回Windows 3.1の起動
    仮想ディスクからWindows 3.1を起動します。
    プログラムマネージャの「メイン」グループにある「Windowsセットアップ」を起動します。
    その[設定]メニューの[基本ハードウェアの変更]を選択しSVGAドライバを解像度指定でインストールします。
    今回は1024x768x256色にしました。
    Windows 3.1を再起動するとSVGAの新しい解像度でデスクトップが表示されます。

    (1)Windows 3.1起動ロゴ



    (2)Windows 3.1の画面
    アプリケーションとしてNotesを利用してみました。



  7. ネットワーク設定ファイルの変更(仮想環境に依存)
    C:\PCTCP\PCTCP.INI等のネットワーク設定ファイルを実際にネットワークを使用する仮想マシン環境に合うように変更します。
    C:\PCTCP\HOSTSは基本的に変更不要です。
    [補足]
    VMwareではネットワークカードとしてAMD PCnet-PCI II(Am79c970A)互換カードがエミュレートされます。
    しかし仮想ディスクを様々な仮想環境で適合検証するためにはドライバの変更は無い方がベターです。
    幸いQEMUやBochsではNE2000(ISA)互換カードをエミュレートできます。
    そこで今回は実環境で使用していたNE2000(ISA)互換カード用ドライバがそのまま使用できるようにしました。
    QEMUでのNE2000(ISA)互換カードはI/Oポート=0x300,IRQ=9固定ですのでドライバ用設定ファイルもそれに合わせます。

  8. Bochs for Windowsでの実行


  9. QEMU on Linuxでの実行

    Ubuntu 8.04付属のQEMUでWindows 3.1を実行させてみました。

  10. QEMU on Windowsでの実行

    Windows XP環境のQEMUでWindows 3.1を実行させてみました。

  11. QEMU on Windows 7 RC(ver 0.9.1ベース)での実行
    2009年5月7日にWindows 7 RC(Ultimate版)が日本でも公開されました。
    ※そのインストール時に表示されるライセンス条項では使用期限が2010年6月1日となっています。
    Windows 7 RC専用のQEMU 0.9.1が存在する訳ではありませんがWindows 7 RCで動作するQEMU on Windowsがあります。
    ・QEMU on Windows 0.9.1(qemu-0.9.1-windows.zip:2008年2月3日ビルド版)はWindows 7 RCでは利用できません。
    ・QEMU on Windows 0.9.1ベースの2008年12月29日ビルド版(qemu-20081229-windows.zip)はWindows 7 RCで動作します。
    ・Windows 7 RCにはWindows XPモードを追加導入できますがそれを導入しなくてもQEMU上で16ビットOS(Windows 3.1)を実行できます。


  12. Q[QEMU on Mac OS X(Intel Mac)] での実行
    Intel Mac対応のQ(QEMU)上でWindows 3.1を実行してみました(ホストOS:Mac OS 10.5)。
    (1)今回使用したQ:Q-0.9.1d118.dmg(http://www.kju-app.org/からダウンロード)
    (2)ネットワークタイプ:ユーザモードネットワーク
    (3)仮想ディスク:QEMU on Windowsで使用した仮想ディスク(vmwin31-flat.vmdk)
    (4)Qでのハード設定画面



    ネットワークカードを指定しない場合はNE2000(ISA)互換カードがエミュレートされるようです。
    しかし念のためAdvancedでの「QEMU Arguments」欄に「-M isapc -net nic,model=ne2k_isa」を指定するのが無難です。
    QEMUパラメータはQ Controlパネルでプレビューできます。



    構成を変更すると「QEMU Arguments」欄がブランクになるため構成変更時は常に「-M isapc -net nic,model=ne2k_isa」を追加します。
    (5)Windows 3.1側ネットワーク設定(C:\PCTCP\PCTCP.INIでの設定);
    ・IPアドレス:10.0.2.31
    ・ルータアドレス:10.0.2.2
    ・DNSサーバアドレス:10.0.2.3
    ※ネットワークドライバはQEMU on Windowsで使用したNE2000(ISA)互換カード用ドライバをそのまま使用。
    (6)Windows 3.1起動コマンド
    QでWindows 3.1を起動した際に内部的に発行されるコマンドをpsコマンドで確認した結果は次の通りです。
    ※実際には1行表示です。
    /Applications/Q.app/Contents/MacOS/i386-softmmu.app/Contents/MacOS/i386-softmmu \
    -cocoaquartz -cocoapath /Users/admin/Documents/QEMU/macqmwin31.qvm \
    -cocoaname macqmwin31 -cocoalivethumbnail \
    -m 48 -std-vga -net user -hda /Users/admin/Documents/vmw31-flat.vmdk \
    -cdrom /dev/cdrom -boot c \
    -M isapc -net nic,model=ne2k_isa

    (7)Windows 3.1操作
    ユーザモードネットワークを使用してサーバにリモート接続できました。



  13. Q[QEMU on Mac OS X(PowerPC)]での実行
    PowerPC対応のQ(QEMU)上でWindows 3.1を実行してみました(ホストOS:Mac OS 10.3)。
    (1)ネットワークタイプ:ユーザモードネットワーク
    (2)仮想ディスク:QEMU on Windowsで使用した仮想ディスク(vmwin31-flat.vmdk)
    (3)Qでのハード設定画面



    PCIネットワークカードを指定しない場合はNE2000(ISA)互換カードがエミュレートされるようです。
    (4)Windows 3.1側ネットワーク設定(C:\PCTCP\PCTCP.INIでの設定);
    ・IPアドレス:10.0.2.31
    ・ルータアドレス:10.0.2.2
    ・DNSサーバアドレス:10.0.2.3
    ※ネットワークドライバはQEMU on Windowsで使用したNE2000(ISA)互換カード用ドライバをそのまま使用。
    (5)Windows 3.1操作
    ユーザモードネットワークを使用してWebアクセスやtelnet接続をしてみました。



  14. Vine Linux 4.2/ppc上のQEMUでのWindows 3.1実行
    Vine Linux 4.2/ppcご参照。

  15. Virtual PC 2007
    LAN Manager 2.1cを導入してWindows NT Serverで稼働しているOracle7 Workgroup ServerにODBC接続してみました。



    実寸画像はこちらです。

  16. その他
    (1)Windows 3.1持ち運びの環境
    QEMU on Windowsはインストールが不要で、かつユーザモードネットワークでインターネット接続も可能です。
    USBメモリにQEMU on Windows, Windows 3.1仮想ディスクを格納しておくといつでもどこでもそのWindows 3.1が利用可能となります。
    (2)Windows 3.1仮想ディスクは容量も少なくて済むためEeePCのような小型PCでも手軽に利用できます。
    (3)NE2000(ISA)カード等のレガシーデバイスをエミュレートできるBochsやQEMUはOS保存の観点から見て大変貴重です。
    (4)現状ではQEMU on WindowsがOS長期保存に適した仮想化ソフトと言えるかも知れません。